home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Sprite 1984 - 1993
/
Sprite 1984 - 1993.iso
/
src
/
lib
/
c
/
hash
/
Hash_InitTable.man
< prev
next >
Wrap
Text File
|
1988-12-30
|
2KB
|
76 lines
\fB' $Header: /sprite/src/lib/c/hash/RCS/Hash_InitTable.man,v 1.1 88/12/30 15:05:24 ouster Exp $ SPRITE (Berkeley)
.so \*(]ltmac.sprite
.HS Hash_InitTable lib
.BS
.SH NAME
Hash_InitTable \- set up new hash table
.SH SYNOPSIS
\fB#include <hash.h>\fR
.sp
Hash_InitTable(\fItablePtr, numBuckets, keyType\fR)
.AS Hash_Table numBuckets
.SH ARGUMENTS
.AP Hash_Table *tablePtr in
Structure to use to hold information about hash table. Caller
must have allocated space at *tablePtr, but need not have initialized
contents.
.AP int numBuckets in
How many buckets should be in table initially. If <= 0, a reasonable
default will be chosen. In any case, the number of buckets will
change dynamically as the number of entries in the table grows.
.AP int keyType in
What type of keys will be used for table: \fBHASH_STRING_KEYS\fR,
\fBHASH_ONE_WORD_KEYS\fR, or integer >= 2.
.BE
.SH DESCRIPTION
.LP
\fBHash_InitTable\fR initializes a Hash_Table structure and sets up
bucket storage for the table, with no entries in the table initially.
It must be called before any other operations are performed on the
hash table.
.LP
The \fIkeyType\fP argument indicates what type of keys will be used
in the table. HASH_STRING_KEYS means that all keys will be strings,
and that the \fIkey\fP argument to procedures like Hash_FindEntry will
be passed in as a string:
.DS
Hash_Table table;
Hash_Entry *entryPtr;
char *key = "foobar";
Hash_InitTable(&table, 0, HASH_STRING_KEYS);
entryPtr = Hash_FindEntry(&table, key);
.DE
If \fIkeyType\fP is HASH_ONE_WORD_KEYS,
then keys will be one-word (Address) values; \fIkey\fP arguments passed
to procedures like \fBHash_FindEntry\fR may be integers or any other values of
the same size as addresses, passed by casting the value to an Address:
.DS
Hash_Table table;
Hash_Entry *entryPtr;
int key = 24;
Hash_InitTable(&table, 0, HASH_ONE_WORD_KEYS);
entryPtr = Hash_FindEntry(&table, (Address) key);
.DE
Finally, if \fIkeyType\fP is an integer greater than 1, then keys
are multi-word values containing \fIkeyType\fP words (not bytes!),
passed into procedures like \fBHash_FindEntry\fR by address:
.DS
Hash_Table table;
Hash_Entry *entryPtr;
int key[6] = {1,2,3,4,5,6};
Hash_InitTable(&table, 0, 6);
entryPtr = Hash_CreateEntry(tablePtr, (Address) key);
.DE
.SH KEYWORDS
hash table, initialization, key